/**
 *
 */
package br.com.werp.regras.tesouraria.integracao;

import br.com.werp.regras.geral.ErroPadrao;
import br.com.werp.regras.geral.integracao.MasterDAO;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.tabelas.Tipo_composicao;

import java.sql.Connection;
import java.sql.SQLException;

import java.util.List;
import java.util.ResourceBundle;


/**
 * @author Marcos
 *
 *24/11/2006
 */
public class TipoComposicaoDAO extends MasterDAO {
    private static TipoComposicaoDAO tipoComposicaoDAO;

    public TipoComposicaoDAO(String banco) throws Exception {
        super(banco);
    }

    public static TipoComposicaoDAO getComposicaoDAO()
        throws Exception {
        if (tipoComposicaoDAO == null) {
            ResourceBundle bundle = ResourceBundle.getBundle(Constantes.CONFIG);
            tipoComposicaoDAO = new TipoComposicaoDAO(bundle.getString(
                        Constantes.BANCO));
        }

        return tipoComposicaoDAO;
    }

    public void salvarTipo_composicao(Tipo_composicao tipo_composicao,
        Object key) throws Exception {
        Connection connection = validarTransacao(key);
        inserirVOGenericoIdentity(connection, tipo_composicao, "tcom_id");
    }

    public void atualizarTipo_composicao(Tipo_composicao tipo_composicao,
        Object key) throws Exception {
        Connection connection = validarTransacao(key);
        atualizarVO(connection, tipo_composicao, new String[] { "tcom_id" });
    }

    public List pesquisarTipo_composicao(Tipo_composicao tipo_composicao)
        throws Exception {
        return pesquisarTipo_composicao(tipo_composicao, null);
    }

    private List pesquisarTipo_composicao(Tipo_composicao tipo_composicao,
        Object key) throws Exception {
        Connection connection = null;

        try {
            if (key == null) {
                connection = getConexao();
            } else {
                connection = validarTransacao(key);
            }

            String where = "";

            if (!Util.isNullOrEmpty(tipo_composicao.getTcom_descricao())) {
                where += (" and tcom_descricao like " +
                aspasLike(tipo_composicao.getTcom_descricao()));
                tipo_composicao.setTcom_descricao(null);
            }

            return pesquisarVO(connection, tipo_composicao, where);
        } finally {
            liberaConeccao(connection);
        }
    }
}
